home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 June / MacFormat 25.iso / Shareware City / Applications / ZX Loader 1.0.4 / Tape converter / mem.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-25  |  1.3 KB  |  99 lines  |  [TEXT/MMCC]

  1.  
  2. /*    i frequently use these functions and i don't want to include a whole ansi lib ...
  3. */
  4.  
  5. #include    "kio.h"
  6. #include    "mem.h"
  7.  
  8.  
  9. /*    copy memory, may overlap
  10. */
  11. void *memmove ( void *zz, const void *qq, long n )
  12. {    Char *z,*q,*x;
  13.  
  14.     if (n<=0) return zz;
  15.  
  16.     x=(Char*)zz + n;
  17.     
  18.     if (zz<qq)    
  19.     {    q = (Char*)qq;
  20.         z = (Char*)zz;
  21.         for (;n;--n) *z++ = *q++;
  22.     }
  23.     else
  24.     {    q = (Char*)qq + n;
  25.         z = (Char*)zz + n;
  26.         for (;n;--n) *--z = *--q;
  27.     };
  28.     
  29.     return x;
  30. }
  31.  
  32.  
  33. /*    copy memory, may not overlap
  34. */
  35. void* memcpy ( void *zz, const void *qq, long n )
  36. {    Char *z,*q;
  37.  
  38.     if (n<=0) return zz;
  39.     
  40.     q = (Char*)qq;
  41.     z = (Char*)zz;
  42.  
  43.     for (;n;--n) *(Char*)z++ = *(Char*)q++;
  44.     
  45.     return z;
  46. }
  47.  
  48.  
  49. /*    compare memory; return 0 if equal, >0 if zz>qq, <0 if zz<qq
  50. */
  51. long  memcmp ( const void *zz, const void *qq, long n )
  52. {    Char *z,*q;
  53.  
  54.     if (n<=0) return 0;
  55.     
  56.     q = (Char*)qq;
  57.     z = (Char*)zz;
  58.  
  59.     for (;n && *q==*z; --n) { q++;z++; }
  60.  
  61.     if (n) return *q-*z;
  62.     return 0;
  63. }
  64.  
  65.  
  66. /*    search for character; return nil or pointer
  67. */
  68. void* memchr ( const void *zz, Char c, long n )
  69. {    Char *z;
  70.     
  71.     if (n<=0) return nil;
  72.     
  73.     z = (Char*)zz;
  74.     
  75.     for (; n && *z!=c; --n) z++;
  76.     
  77.     if (n) return z;
  78.     return nil;    
  79. }
  80.  
  81.  
  82. /*    clear memory with character
  83. */
  84. void* memset ( void *zz, Char c, long n )
  85. {    Char *z;
  86.  
  87.     if (n<=0) return zz;
  88.     
  89.     z = (Char*)zz;
  90.     
  91.     for (; n; --n) *z++ = c;
  92.     
  93.     return z;
  94. }
  95.  
  96.  
  97.  
  98.  
  99.